import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
    //定义全局参数 其他页面可以直接获取state里面的内容
    state: {
        token: '', //方法一 localStorage.getItem("token") 
        //反序列化获取session会话中的 userInfo对象
        userInfo: JSON.parse(sessionStorage.getItem("userInfo"))
    },
    mutations: {
        //相当于get
        SET_TOKEN: (state, token) => {
            state.token = token //将传入的token赋值 给state的token
                //同时可以存入浏览器的localStorage里面
            localStorage.setItem("token", token)
        },
        SET_USERINFO: (state, userInfo) => {
            state.userInfo = userInfo //将传入的tuserInfo赋值 给state的userInfo
                //同时可以存入会话的sessionStorage里面 sessionStorage中只能存字符串 不能存入对象所以我们存入序列化 jons串
            sessionStorage.setItem("userInfo", JSON.stringify(userInfo))
        },
        //删除token及userInfo
        REMOVE_INFO: (state) => {
            state.token = '';
            state.userInfo = {};
            localStorage.setItem("token", '')
            sessionStorage.setItem("userInfo", JSON.stringify(''))
        }
    },
    getters: {
        //配置一个getUser可以直接获取已经反序列化对象的一个userInfo
        getUser: state => {
            return state.userInfo;
        },
        getToken: state => {
            return state.token;
        }
    },
    actions: {},
    modules: {}
})